<?php
/**
 * Created by PhpStorm.
 * User: bill
 * Date: 2014/12/2
 * Time: 9:55
 */
if(!isset($_SESSION)){
    session_start();
}

include_once __DIR__ . '/bs.publicnumber.php';
include_once __DIR__ . '/bs.QunLiaotian.php';
include_once __DIR__ . '/BsUserCenter.php';

class C用户 extends CBS
{
    /**
     * @var Do用户
     */
    public $vo用户数据;
    public $vsOpenId;
    /**
     * @var DoMessage
     */
    public $vo当前消息;
    public $vs用户状态;
    public $vi公众号ID;
    public $vi公众号openID;
    /**
     * @var C二维码
     */
    private $vo二维码;


    public $vo当前会话;
    /**
     * @var C信息中心;
     */
    public $vo信息中心;

    /**
     * 构造函数
     * @param C信息中心 $vo中心
     */
    function __construct(C信息中心 $vo中心){
        parent::__construct();
        //初始化,构造用户数据DO
        $vo中心->vc用户=$this;
        $openId=$vo中心->vs用户OpenId;
        $this->vsOpenId=$openId;
        $this->vo用户数据=new Do用户();
        $this->vo用户数据->set_openID($openId);
        $this->vo用户数据->set_status(Constants::y用户状态_新用户);
        $this->vs用户状态=Constants::y用户状态_新用户;
        $this->vo信息中心=$vo中心;
        $this->vi公众号openID=$vo中心->vs公众号OpenId;
        $this->vi公众号ID=$vo中心->vs公众号Id;

        //初始化用户的当前消息
        $this->vo当前消息=$vo中心->vo当前消息;

        //$this->vc商家=new C商户($this);
        pdo()->update('用户',array('最后登录时间'=>Date('Y-m-d H:i:s')),array('openID'=>$openId));

    }

    public static function fg给session赋值() {
        $_SESSION['vo用户数据']['G_SERV_ID'] = G_SERV_ID;
        $_SESSION['vo用户数据']['公众号ID'] = G_SERV_ID;

        $do用户 = new Do用户();
        $用户数据 = self::$pdo->selectBO($do用户,array('openID'=>$_SESSION['vo用户数据']['openID']));
        if ($用户数据) {
            $_SESSION['vo用户数据']['id'] = $用户数据->data['id'];
            $_SESSION['vo用户数据']['name'] = $用户数据->data['name'];
            $_SESSION['vo用户数据']['认证'] = $用户数据->data['认证'];
            $_SESSION['vo用户数据']['上级'] = $用户数据->data['上级'];
            $_SESSION['vo用户数据']['公众号openID'] = $用户数据->data['公众号openID'];
            $_SESSION['vo用户数据']['密码'] = $用户数据->data['密码'];
            $_SESSION['vo用户数据']['userCenterID'] = $用户数据->data['userCenterID'];
        }
    }

    protected function initByInstance(C用户 $instance){
        //从数据库加载数据对象
        $this->vo用户数据=$instance->vo用户数据;
        $this->vs用户状态=$instance->vs用户状态;

    }
    /**
     * //从微信获取当前用户的微信账户信息
     */
    private  function f获取微信用户信息()
    {
        $vsInfo = wzd()->vc公众号->f获取用户基本信息();
        if ($vsInfo) {
            $vo用户信息 = json_decode($vsInfo);
            $this->vo用户数据->set_name($vo用户信息->nickname);
            $this->vo用户数据->set_name_wx($vo用户信息->nickname);
            $this->vo用户数据->set_note($vsInfo);
            $this->vo用户数据->set_头像($vo用户信息->headimgurl);
        }
    }

    /**
     * 同构造函数不同的是, 初始化时从数据库中取回用户的用户数据
     * @param C信息中心 $vo中心
     * @internal param string $openId
     * @internal param DoMessage $message
     * @return \C用户
     */
    public static function init(C信息中心 $vo中心){


        $bo=new C用户($vo中心);
        $openId=$vo中心->vc用户->vsOpenId;
        //从数据库加载数据对象
        $bo->vo用户数据->loadByKeys(array($bo->vo用户数据->get_openID(false)=>$openId));
        pdo()->update('用户',array('最后登录时间'=>Date('Y-m-d H:i:s')),array('openID'=>$openId));
        $bo->vs用户状态=Constants::y用户状态_会员;

        return $bo;
    }
    /**
     * @param $openId
     * @return array|bool
     */
    public static function f是否注册($openId){
        //TODO 查询记录是否存在方法可优化
        $do=new Do用户();
        return self::$pdo->checkRecordExist($do->tableName(),[$do->get_openID(false)=>$openId]);

    }

    public function f关注($vs公众号AppId, $codeId=''){
        logger()->logExctra('--进入用户注册--'.__LINE__.':');
        $this->f注册($codeId);
        //$vs回复=$this->vo信息中心->fh生成文本消息(Constants::消息_欢迎信息($vs公众号AppId,$this->vo信息中心->vs公众号Id)); // 发送欢迎文字
      //  $vs回复 = $this->vo信息中心->fh生成文本消息(C公众号::ff查找公众号欢迎语($this->vo信息中心->vs公众号Id));
        $vs回复 = $this->ff公众号自制目录发送图文信息(1);

        return $vs回复;
    }

    public function f取消关注(){
        logger()->logInfo('用户取消关注:'.$this->vo用户数据->get_name());

        $doUser = new Do用户();
        $doUser->set_openID($this->vsOpenId);
        if ($doUser->where($doUser->data)->row()) {
            $doUser->set_unsubscribe(1);
            $doUser->set_unsubscribe_time(date("Y-m-d H:i:s"));
            $doUser->update();
        }
        return $this->vo信息中心->fh生成文本消息(Constants::m默认消息_取消关注);
    }

    public function f注册($codeId='')
    {
        $this->f获取微信用户信息();
        $do=$this->vo用户数据;
        $return= $this->fb保存用户($do, $codeId);
        if($return) {
            $this->vs用户状态=Constants::y用户状态_会员;
        }
        if ($this->f是否开启扫码直接通过医师审核()) {
            $this->f直接通过医师审核();
        }
        $this->fg给session赋值();
        return $return;
    }

    public function f设置位置($locationLabel,$x,$y)
    {
        $DO=$this->vo用户数据;
        $DO->set_location_name($locationLabel);
        $DO->set_location_x($x);
        $DO->set_location_y($y);
        $DO->set_坐标类型('gcj02');
        $ret=$DO->update();
        logger()->logInfo('更新地理位置:'.var_export($DO,true));
        return $ret;
    }

    protected function fs生成日志($str,$当前方法名) {
        logger()->logDebug('['.$当前方法名.']开始');
        logger()->logDebug($str);
        logger()->logDebug('['.$当前方法名.']结束');
    }

    public function ff公众号自制目录发送图文信息($目录参数){
       // print_r($c用户);

        $do= new Do菜单响应表();
        $菜单响应=pdo()->selectBOs($do,array("菜单id"=>$目录参数),'',' order by `排序` ');


        /*
         * $Tools= new Tools();
        $Token= $Tools-> fh通过公众号id获取公众号Token信息(2);
       $url = "https://api.weixin.qq.com/cgi-bin/material/get_material?access_token=".$Token;
        $data ='{"media_id":"'. $菜单->data['media_id'].'"} ';

        $ret = $this->curl_post_page($url,$data);

         $result = json_decode($ret);
*/


       // $欢迎语句 = "欢迎来到 [富侨足道东直门店]" ;
        $parms=['菜单响应'=>$菜单响应];
        //$parms=['欢迎词'=>$result->news_item[0]->title,'目录名'=>$目录[$目录参数]['目录名']];
        $图文信息=$this->vo信息中心->vc微直达->给用户发送商家定制功能($parms);

        $this->vo信息中心->ff发送图文消息_多公众号($图文信息,$this->vo用户数据->get_openID(),$this->vi公众号ID);
        $vs回复 = '发送公众号自制目录发送图文信息';
        Cx消息路由::ff处理返回堆栈();
        return $vs回复;

    }


   private  function curl_post_page($url, $data, $timeout = 4)
    {


        $ch = curl_init();
        curl_setopt($ch,CURLOPT_URL,$url);
        curl_setopt($ch,CURLOPT_CUSTOMREQUEST,"POST");
        curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,FALSE);
        curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,FALSE);
        curl_setopt($ch,CURLOPT_FOLLOWLOCATION,1);
        curl_setopt($ch,CURLOPT_AUTOREFERER,1);
        curl_setopt($ch,CURLOPT_POSTFIELDS,$data);
        curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
        $output = curl_exec($ch);
        if(curl_errno($ch)){
            echo curl_error($ch);
        }
        return $output;
    }


    public function ft添加群成员($vi二维码编号){
        $聊天 =new C群聊天($this->vo信息中心);

        return $是否生成二维码 = $聊天->ft添加群成员($vi二维码编号,$this->vo用户数据->get_id());

    }

    private function fc检查二维码类型($vi二维码编号) {
        $do = new DoQrcode();
        $pdo = pdo();
        $二维码信息 = $pdo ->selectBO($do,array('code'=>$vi二维码编号));
        if($二维码信息->data['business']==2) {
            $type = '分店';
        }else if($二维码信息->data['business']==3) {
            $type = '员工';
        }else if($二维码信息->data['business']==4) {
            $type = '收银台';
        }else if($二维码信息->data['business']==5) {
            $type = '群邀请码';
        }
        else if($二维码信息->data['business']==6) {
            $type = '会议码';
        }
        else {
            $type = '1';
        }
        return $type;
    }

    public function f根据用户id获取用户信息数组($用户id) {
        $用户信息 = pdo()->selectColumns('用户',array('*'),array('id'=>$用户id));
        return $用户信息;
    }

    private function fy用户推广记录($vi二维码编号){
        logger()->logDebug2("被推广用户");
        if($this->vo用户数据->data['status']=="新用户"){
            logger()->logDebug2("被推广用户".$this->vo用户数据->data['id']."通过扫".$vi二维码编号."二维码关注成功");
            $re=pdo()->update("`用户推广表` set `数量`=`数量`+1",array(),array("二维码编号"=>$vi二维码编号));
            if($re){
                $do=new Do用户推广详细();
                $do->set_uid($this->vo用户数据->data['id']);
                $do->set_二维码编号($vi二维码编号);
                $do->set_最初关注时间(date('YmdHis'));
                $rin=$do->insert();
                //关注成功之后给双方发送推广成功消息
               if($rin) $this->发送推广成功消息($vi二维码编号);
                return $rin;
            }else{
                return false;
            }
        }else{
            //旧用户取关 再次关注不做任何操作
            return true;
        }
    }

    private function 发送推广成功消息($vi二维码编号) {
        $对方用户信息 = $this->获取推广二维码所属用户信息($vi二维码编号);
        $对方消息 = "⭕用户 [".$this->vo用户数据->get_name() .'] 已通过您的二维码关注成功';

        $this->vo信息中心->ff发送文本消息_多公众号($对方消息,$对方用户信息['openID'],$对方用户信息['公众号ID']);
        $推广员电话 = Empty($对方用户信息['telephone']) ? '暂无' : $对方用户信息['telephone'];
//        $用户消息 = '您已通过'.$对方用户信息['name'].'加入爱贝儿医，您们已经成为好友。';
//        $用户消息 .= "\n昵称: ".$对方用户信息['name'];
//        $用户消息 .= "\n联系方式: ".$推广员电话;
//        $this->vo信息中心->ff发送文本消息_多公众号($用户消息,$this->vo用户数据->get_openID(),$this->vi公众号ID);
    }

    private function 获取推广二维码所属用户信息($vi二维码编号) {
        $用户id = pdo()->selectColumns('qrcode',array('user_id'),array('code'=>$vi二维码编号));

        $用户信息 = pdo()->selectColumns('用户',array('openID','name','telephone','公众号ID'),array('id'=>$用户id['user_id']));
        return $用户信息;
    }

    private function 绑定qrcode表记录($vi二维码编号) {
        $data['user_id'] = $this->vo用户数据->get_id();
        $data['user_open_id'] = $this->vo用户数据->get_openID();
        $更新结果 = pdo() -> update('qrcode',$data,array('code'=>$vi二维码编号));
        return $更新结果;
    }

    private function 绑定用户二维码表记录($vi二维码编号) {
        $data['店长id'] = $this->vo用户数据->get_id();
        $data['用户名称'] = $this->vo用户数据->get_name();
        $data['当前绑定员工id'] = $this->vo用户数据->get_id();
        $data['绑定时间'] = time();
        $更新结果 = pdo() -> update('用户二维码',$data,array('代理id'=>$vi二维码编号));
        if($更新结果) {
            $收银台信息 = pdo() -> selectColumns('用户二维码',array('代理名称'),array('代理id'=>$vi二维码编号));
            return $收银台信息['代理名称'];
        }else {
            return $更新结果;
        }
    }


    public function fs扫二维码($vi二维码编号){

        $被扫用户id = C二维码::f二维码所属用户($vi二维码编号,true);

        $二维码所属用户身份 = '未找到用户';
        if($被扫用户id) {
            $是否属于用户推广=C二维码::f二维码是否属于用户推广($vi二维码编号,true);
            if($是否属于用户推广){
                $二维码所属用户身份 = $是否属于用户推广;
            }
        }

        $二维码类型 = $this->fc检查二维码类型($vi二维码编号);
        $ret = null;

        Logger::getInstance()->logInfo("---二维码类型--- $二维码类型");
        Logger::getInstance()->logInfo("---扫二维码--- $vi二维码编号");
        if ($this->f是否开启扫码直接通过医师审核()) {
            $this->f直接通过医师审核();
        }

        if($二维码类型=='收银台' ) {
            #医师推广记录
            if( $二维码所属用户身份=='用户推广二维码') {
                $ret = $this->fy用户推广记录($vi二维码编号);
            }
            return $ret;

        } else if ($二维码类型=='群邀请码'){
            $ret = $this->ft添加群成员($vi二维码编号);
            return $ret;

        } else if($二维码类型=='会议码'){
            $聊天 =new C群聊天($this->vo信息中心);
            //$ret = $this->vo信息中心->vc微直达->给用户发送会议信息();
            $ret = $聊天->ff发送进入会议的通知($vi二维码编号,$this->vo用户数据->get_id());
            return $ret;

        }
        return '';
    }


    public function f是否开启扫码直接通过医师审核() {
        $do = new DoSystem_config();
        $do->set_c_key('key1');
        $do->set_c_value('1');
        return $do->where($do->data)->count();
    }

    public function f是否是通过审核的医生($user_id) {
        Logger::getInstance()->logInfo("--- call f是否是通过审核的医生---");
        $do = new Do医师详情();
        $do->set_用户id($user_id);
        if ($do->loadFromDB()) {
            if ($do->get_状态() == '通过') {
                return true;
            }
        }
        return false;
    }

    public function f直接通过医师审核() {
        Logger::getInstance()->logInfo("--- call f直接通过医师审核---");
        $doUser =  new DO用户();
        $doUser->set_openID($this->vsOpenId);
        $uid = $doUser->fields("id")->where($doUser->data)->getOneField();


        $do = new Do医师详情();
        $do->set_用户id($uid);
        $doctor = $do->where($do->data)->row();
        if($doctor && $doctor->data['状态']=='通过'){
            return false;
        }

        $do->set_openID($this->vsOpenId);
        $do->set_用户id($uid);
        $do->set_状态('待完善');
        return $do->save();

    }

    /**
     * 发送会话消息，结构体消息中包含消息发送的对象
     * @param DoMessage $vs消息
     * @param string | null $vs对方openId
     * @return bool
     */
    public function ff发送会话消息(DoMessage $vs消息,$vs对方openId=null)
    {
//        $this->vo信息中心->ff发送会话消息($vs消息,$vs对方openId);
        $公众号id = C公众号::fg根据openID获取公众号id($vs对方openId);
        $this->vo信息中心->ff发送会话消息_多公众号($vs消息,$vs对方openId,$公众号id);
        return true;
    }
    public function ff发送会话文本消息($vs消息文本,$vs对方openId){
//        $this->vo信息中心->ff发送文本消息($vs消息文本,$vs对方openId);
        $公众号id = C公众号::fg根据openID获取公众号id($vs对方openId);
        $this->vo信息中心->ff发送文本消息_多公众号($vs消息文本,$vs对方openId,$公众号id);
    }

    public static function fx修改信息(Do用户 $do)
    {
        $ret=$do->save();
        return $ret;
    }

    protected function fb保存用户(Do用户 $doUser, $codeId='') {
        $doUser->set_serv_id(G_SERV_ID);
        $doUser->set_公众号ID($this->vi公众号ID);
        $doUser->set_公众号openID($this->vi公众号openID);
        $doUser->set_最后登录时间(Date('Y-m-d H:i:s'));
        $doUser->set_unsubscribe_time('');
        $doUser->set_unsubscribe(0);
        $wxName=$doUser->get_name_wx();
        $name=$doUser->get_name();
        $被扫用户id = C二维码::f二维码所属用户($codeId,true);
        if($被扫用户id){
            $doUser->set_superior($被扫用户id);
        }
        if(empty($wxName)) $wxName=Constants::m默认用户名;
        if(empty($name)) $doUser->set_name($wxName);

        Empty($wxName) ? $doUser->set_用户状态('未激活') : $doUser->set_用户状态('激活');

        logger()->logInfo('--保存用户信息--' . var_export($doUser, true));
        if ($doUser->get_id()) {
            $ret = $doUser->update();

        } else {
            $ret = $doUser->save();
            #上报用户中心
            $bsUserCenter = new BsUserCenter();
            $bsUserCenter->getInfoFromUserCenter($doUser->get_openID());
        }

        if($ret===false)
            return "数据保存失败!";
        else
            return "用户保存成功：".$ret;
    }

    protected function fb保存默认关键字(Do用户 $doUser){
            $doKw = new DoKeywords();
            $doKw->set_serv_id(G_SERV_ID);
            $doKw->set_user_id($doUser->get_id());
            $doKw->set_type_id(1);//用户的默认商品，商户的卖家昵称为商品名称
            $b=$doKw->loadFromDB();

        if($b){
            $doKw->set_name($doUser->get_seller_name());
            $doKw->set_seller_name($doUser->get_seller_name());
            $doKw->set_description($doUser->get_description());
            $ret= $doKw->update();
        }else{
            $doKw = new DoKeywords();
            $doKw->set_serv_id(G_SERV_ID);
            $doKw->set_公众号ID($this->vi公众号ID);
            $doKw->set_公众号openID($this->vi公众号openID);
            $doKw->set_name($doUser->get_name());
            $doKw->set_seller_name($doUser->get_seller_name());
            $doKw->set_description($doUser->get_description());
            $doKw->set_type_id(1);//用户的默认商品，商户的卖家昵称为商品名称
            $doKw->set_user_id($doUser->get_id());
            $doKw->set_user_open_id($doUser->get_openID());
            $doKw->set_status(1);
            $ret= $doKw->save();
        }
        logger()->logDebug2($doKw,'保存默认关键字');
        if($ret) return $doKw;
        else return $ret;
    }

    public function fj检查非法字符($file,$strpo){
            $content = file_get_contents($file);
            $array = explode("|", $content);
            for($i=0; $i<count($array); $i++){
                $strpo=str_replace($array[$i]," ",$strpo);
            }
            return $strpo;
        }

    public function fc查看帮助(){
        $do=new Do帮助信息();
        $帮助=pdo()->selectBOs($do,array("公众号ID"=>$_SESSION['vo用户数据']['公众号ID']));
        return $帮助;
    }


    public function fa生成分享病历链接($病历id){

        $用户信息 = $this->fs查找所有关注病历的用户($病历id);

        $parms=['菜单响应'=>'分享病历'];

        $图文信息=$this->vo信息中心->vc微直达->给用户分享病历($parms,$病历id,$用户信息[0]['title']);
        $resq = 0;
        foreach($用户信息 as $value){

            $resq = $this->vo信息中心->ff发送图文消息_多公众号($图文信息,$value['openID'],$value['公众号ID']);

        }

        return $resq;
    }

    public function fa病历修改通知($病历id){
        //通知所有关注该病例的人
        $用户信息 = $this->fs查找所有关注病历的用户($病历id);
        $病历 = pdo()->selectColumns("病历",array("*"),array('id'=>$病历id));
        //替换主题中的双引号为单引号
        $病历['title'] =str_replace ( '"' ,  "'" ,$病历['title']);
        $resq = 0;
        $parms=['菜单响应'=>'修改病历'];

        $图文信息=$this->vo信息中心->vc微直达->给用户分享病历($parms,$病历id,$用户信息[0]['title']);
        foreach($用户信息 as $value){
            $resq = $this->vo信息中心->ff发送图文消息_多公众号($图文信息,$value['openID'],$value['公众号ID']);

           // $resq = $this->vo信息中心->ff发送文本消息_多公众号("[".$_SESSION['vo用户数据']['name']."]已修改病历 [".$病历['title']."]!",$value['openID'],$value['公众号ID']);

        }
        Cx消息路由::ff处理返回堆栈();
        return $resq;
    }

    private function fs查找所有关注病历的用户($病历id){
        $用户信息 = pdo()->selectAll("SELECT  c.title,b.openID,b.`公众号ID` FROM  `关注病历` a LEFT JOIN `用户` b ON(a.`用户id`= b.id) LEFT JOIN `病历` c ON(c.id = a.病历id)  WHERE a.`病历id`=$病历id AND a.`状态`='关注'; ");
        return $用户信息;
    }

    public function fc显示所有显示的推广文章(){
        $显示=pdo()->selectAll("select * from `推广文章` where 公众号ID='".$_SESSION['vo用户数据']['公众号ID']."' and `是否显示`='是' ");
        return $显示;

    }

    public function f申请成为推广人($用户id){
        $已经是推广人=$this->f查看是否已经是推广人($用户id);
        if($已经是推广人) return "您已经是推广人!";

        $身份生成成功=$this->f将用户生成推广人身份($用户id);
        if(!$身份生成成功) return "生成推广人身份失败,请稍后再试";
        return "恭喜，转发已成功!";
    }

    private function f查看是否已经是推广人($用户id){
        $do=new Do用户推广表();
        $已经是推广人=pdo()->selectBO($do,array("用户id"=>$用户id));
        return  $已经是推广人;
    }

    private function f将用户生成推广人身份($用户id){
        $do用户= new Do用户();
         $do用户->loadByKeys(array('id'=>$用户id));
        $二维码编号= "ygtg".Date('YmdHis');

        $生成二维码code=C二维码::fz增加二维码($do用户,"用户推广二维码",4,1,$this->vi公众号ID,$this->vi公众号openID,$二维码编号);
        if(!$生成二维码code) return false;
        $do=new Do用户推广表();
        $do->set_用户id($用户id);
        $do->set_二维码编号($生成二维码code);
        $do->set_数量(0);
       $插入= $do->insert();
        return $插入;

    }

    public function fx显示群二维码($群id,$用户id){
        $聊天 =new C群聊天($this->vo信息中心);

        return $是否生成二维码 = $聊天->fx显示群二维码($群id,$用户id);
    }

    public function fc查找群信息($群id)
    {
        $聊天 = new C群聊天($this->vo信息中心);

        return $是否生成二维码 = $聊天->fc查找群信息($群id);
    }

    public function fc查找群文档信息($群id){
        $聊天 =new C群聊天($this->vo信息中心);

        return $是否生成二维码 = $聊天->fc查找群文档信息($群id);
    }

    public  function fx显示群列表($父id =null){

        $聊天 =new C群聊天($this->vo信息中心);
        return $是否生成二维码 = $聊天->fx显示群列表($_SESSION['vo用户数据']['id'],$父id);
    }
    public  function fx显示群列表1($类型){

        $聊天 =new C群聊天($this->vo信息中心);
        return $是否生成二维码 = $聊天->fx显示群列表1($_SESSION['vo用户数据']['id'],$类型);
    }

    public  function fc创建群组(){
        $聊天 =new C群聊天($this->vo信息中心);

        return $建群 = $聊天->fj建群($_SESSION['vo用户数据']['id']);
    }

    public  function fc创建课程群组($群主id,$父id =0){
        $聊天 =new C群聊天($this->vo信息中心);

        return $建群 = $聊天->fj建课程群($群主id,$父id);
    }

    public  function fs删除课程群组($群主id,$父id =0){
        $聊天 =new C群聊天($this->vo信息中心);

        return $建群 = $聊天->f删除会议群($群主id,$父id);
    }

    public  function fj加入视频群聊($群id){
        $聊天 =new C群聊天($this->vo信息中心);

        return $建群 = $聊天->fj加入视频群聊($_SESSION['vo用户数据']['id'],$群id);
    }

    public  function fx群成员($群id,$角色){
        $聊天 =new C群聊天($this->vo信息中心);

        return $群成员 = $聊天->fx显示群成员($群id,$角色);
    }

    public  function fs审核删除群成员($成员id){
        $聊天 =new C群聊天($this->vo信息中心);

        return $群成员 = $聊天->fs审核删除群成员($成员id,$_SESSION['vo用户数据']['name']);
    }

    public  function fs审核群成员($成员id){
        $聊天 =new C群聊天($this->vo信息中心);

        return $群成员 = $聊天->fs审核群成员($成员id,$_SESSION['vo用户数据']['name']);
    }

    public  function fs设置成为群助手($成员id){
        $聊天 =new C群聊天($this->vo信息中心);

        return $群成员 = $聊天->fs设置成为群助($成员id);
    }

    public  function fs取消群助手($成员id){
        $聊天 =new C群聊天($this->vo信息中心);

        return $群成员 = $聊天->fs取消群助手($成员id);
    }

    public  function fs删除群成员($成员id){
        $聊天 =new C群聊天($this->vo信息中心);

        return $群成员 = $聊天->fs删除群成员($成员id,$_SESSION['vo用户数据']['name']);
    }

    public  function fs退出群($成员id){
        $聊天 =new C群聊天($this->vo信息中心);

        return $群成员 = $聊天->fs退出群($成员id,$_SESSION['vo用户数据']['name']);
    }

    public  function fc查看用户是否是群用户($群id){
        $聊天 =new C群聊天($this->vo信息中心);
        $信息 = $聊天->fc查看用户是否是群用户($_SESSION['vo用户数据']['id'],$群id);

        return $信息;
    }

    public  function fx显示动态主页($当前页码,$参数){

        $聊天 =new C个人动态($this->vo信息中心);
        return $是否生成二维码 = $聊天->fx显示动态主页($当前页码,$参数);
    }

    public function ft添加病历文章($提交参数){

        $re = pdo()->insert('病历文章',array('title'=>$提交参数['title'],'关键词'=>$提交参数['关键词'],'区域id'=>$提交参数['区域id'],'医院id'=>$提交参数['医院id'],'详情'=>$提交参数['content'],'添加用户id'=>$_SESSION['vo用户数据']['id']));
        $病历文章id = pdo()->lastInsertId();
        //$提交参数['专家id']：不存在
        if($提交参数['专家id']) {
            foreach($提交参数['专家id'] as $value){
                pdo()->insert('病历文章的关联用户',array('病历文章id'=>$病历文章id,'关联用户id'=>$value));
            }

            $parms=['菜单响应'=>'发布病历'];

            $图文信息=$this->vo信息中心->vc微直达->将病历推送至管理人员($parms,$病历文章id,$提交参数['title']);
          ///  print_r($图文信息);

            $用户信息 = pdo()->selectAll("SELECT b.openID,b.`公众号ID` FROM `病历文章的关联用户` a LEFT JOIN `用户` b ON(a.`关联用户id` = b.id) WHERE a.`病历文章id`='".$病历文章id."';");

            foreach($用户信息 as $value){

                $resq = $this->vo信息中心->ff发送图文消息_多公众号($图文信息,$value['openID'],$value['公众号ID']);

            }
            Cx消息路由::ff处理返回堆栈();
        }
        return $病历文章id;
    }

}